class Plugin {
  constructor(options) {
    console.log(options)
  }
  apply(compiler) {
    //  compiler是贯穿整个编译过程的一个大对象 ；compiler 是Compiler（Tapable）这个的类的一个实例，这个类只会new一次
    //  compilation每次编译 都会产生一个compilation：compilation是Compilation的一个实例 一次编译可以执行多次
    let hooks = compiler.hooks;
    hooks.emit.tap('qqqq', (compilation) => {
      let assets = compilation.assets;// 打包之后所有的资源
      console.log(assets)
      let str = ``;
      for (let k in assets) {
        str += `文件名：${k}；文件的内容是${JSON.stringify(assets[k])}\n`
      }
      assets['qq.md'] = {
        source() {
          return str
        },
        size() {
          return str.length
        }
      }
    })
    console.log('myplugin的apply执行了')
  }
}

module.exports = Plugin